/* DOT_OPERATIONS.H
 *
 * This file contains the dot operations. These are image operations
 * which can be directly performed on the source image. This is true
 * for operations which can calculate the new pixel value, without
 * having to know the value of pixels other than the one changed.
 * The size of the image will not be affected by performing a dot
 * operation.
 */

#pragma once

#include "image.h"
#include "operations.h"

//The setup methods return false to cancel the operation.
//The other (operation) methods return false on failure.

bool grayscaleSetup( Task *task );
bool grayscale( Image &img, void *data );

bool monotoneSetup( Task *task );
bool monotone( Image &img, void *data );

bool yCbCrSetup( Task *task );
bool yCbCr( Image &img, void *data );

bool rgbLevelsSetup( Task *task );
bool rgbLevels( Image &img, void *data );

bool contrastSetup( Task *task );
bool contrast( Image &img, void *data );

bool invertSetup( Task *task );
bool invert( Image &img, void *data );

bool tresholdSetup( Task *task );
bool treshold( Image &img, void *data );

bool exponentSetup( Task *task );
bool exponent( Image &img, void *data );

bool logarithmSetup( Task *task );
bool logarithm( Image &img, void *data );

bool naturalLogarithmSetup( Task *task );
bool naturalLogarithm( Image &img, void *data );
